package com.innovations.inn.service;

import com.innovations.inn.domain.OutcomesClassifyRelate;
import java.util.List;

/**
 * 成果分类对应Service接口
 *
 * @author dp
 * @date 2024-08-10
 */
public interface IOutcomesClassifyRelateService {
    /**
     * 查询成果分类对应
     *
     * @param relateId 成果分类对应主键
     * @return 成果分类对应
     */
    OutcomesClassifyRelate selectOutcomesClassifyRelateByRelateId(Long relateId);

    /**
     * 查询成果分类对应列表
     *
     * @param outcomesClassifyRelate 成果分类对应
     * @return 成果分类对应集合
     */
    List<OutcomesClassifyRelate> selectOutcomesClassifyRelateList(OutcomesClassifyRelate outcomesClassifyRelate);

    /**
     * 新增成果分类对应
     *
     * @param outcomesClassifyRelate 成果分类对应
     * @return 结果
     */
    int insertOutcomesClassifyRelate(OutcomesClassifyRelate outcomesClassifyRelate);

    /**
     * 新增成果分类对应列表
     *
     * @param outcomesClassifyRelateList 成果分类对应
     * @return 结果
     */
    int insertOutcomesClassifyRelateList(List<OutcomesClassifyRelate> outcomesClassifyRelateList);

    /**
     * 修改成果分类对应
     *
     * @param outcomesClassifyRelate 成果分类对应
     * @return 结果
     */
    int updateOutcomesClassifyRelate(OutcomesClassifyRelate outcomesClassifyRelate);

    /**
     * 批量删除成果分类对应
     *
     * @param relateIds 需要删除的成果分类对应主键集合
     * @return 结果
     */
    int deleteOutcomesClassifyRelateByRelateIds(Long[] relateIds);

    /**
     * 删除成果分类对应信息
     *
     * @param relateId 成果分类对应主键
     * @return 结果
     */
    int deleteOutcomesClassifyRelateByRelateId(Long relateId);

    /**
     * 删除成果分类对应信息--根据成果标识
     *
     * @param researchOutcomesId 成果标识
     * @return 结果
     */
    int deleteOutcomesClassifyRelateByOutcomesId(Long researchOutcomesId);

    /**
     * 实体数据补全
     *
     * @param outcomesClassifyRelate 实体
     * @param userId                 用户id
     * @param crateType              创建类型 1：新增 2：修改
     */
    void completeData(OutcomesClassifyRelate outcomesClassifyRelate, Long userId, Integer crateType);

    /**
     * 查询成果分类对应-根据科研成果标识
     *
     * @param researchOutcomesId 成果标识
     * @return 成果分类对应
     */
    List<OutcomesClassifyRelate> selectOutcomesClassifyRelateByOutcomesId(Long researchOutcomesId);

}
